#ifndef ELEVATION_CALCULATOR_H
#define ELEVATION_CALCULATOR_H

#include <string>
#include <vector>
#include <map>
#include <tuple>

// 表示一个经纬度坐标点
struct GeoPoint {
    double longitude; // 经度
    double latitude;  // 纬度
    double elevation; // 高程

    GeoPoint(double lon = 0.0, double lat = 0.0, double elev = 0.0)
        : longitude(lon), latitude(lat), elevation(elev) {}
};

// 高程计算器类
class ElevationCalculator {
public:
    ElevationCalculator();
    ~ElevationCalculator();

    // 从文件加载高程数据
    bool loadElevationData(const std::string& filePath);

    // 根据经纬度计算高程
    double calculateElevation(double longitude, double latitude);

    // 检查数据是否已加载
    bool isDataLoaded() const;

private:
    // 存储高程数据的容器
    std::vector<GeoPoint> elevationData;

    // 数据加载状态
    bool dataLoaded;

    // 使用线性插值计算高程
    double linearInterpolation(const GeoPoint& p1, const GeoPoint& p2, double longitude, double latitude);
};

#endif // ELEVATION_CALCULATOR_H